<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 给你一个按 非递减顺序 排序的整数数组 nums，返回 每个数字的平方 组成的新数组，要求也按 非递减顺序 排序。

    // 输入： nums = [-4, -1, 0, 3, 10]
    // 输出：[0, 1, 9, 16, 100]
    // 解释： 平方后， 数组变为[16, 1, 0, 9, 100]
    // 排序后， 数组变为[0, 1, 9, 16, 100]

    /**
     * @param {number[]} nums
     * @return {number[]}
     */
    // var sortedSquares = function (nums) {
    //   for (let i = 0; i < nums.length; i++) {
    //     nums[i] = Math.pow(nums[i], 2)
    //   }

    //   return nums.sort((a, b) => a - b)
    // };

    // 双指针法
    var sortedSquares = function (nums) {
      let i = 0;
      let j = nums.length-1;
      let index = nums.length-1;
      let arr = []

      while(index>=0){
        if(Math.abs(nums[i])>Math.abs(nums[j])){
          arr[index] = nums[i]*nums[i]
          i++
        }else{
          arr[index] = nums[j]*nums[j]
          j--
        }
        index--
      }

      return arr
    };

    console.log(sortedSquares([-4,-1,0,3,10]));
  </script>
</body>

</html>